from ..common import *

__all__ = [
    'get_django_settings_path', # 获取项目的 setting.py 路径
    'get_path_by_appname_filename', # 以应用程序名和文件名为依据，找到所需的文件路径
]

def get_django_settings_path()->str:
    """获取Django路径下的settings.py的路径"""
    configs = get_configs(CONFIG_PATH)
    DIRNAME = configs["dirname"]
    DIRSETTINGS = os.path.join(DIRNAME, configs['project_name'], 'settings.py')
    return DIRSETTINGS

def get_path_by_appname_filename(app_name, file_name, do_glob=False):
    """以应用程序名和文件名为依据，找到所需的文件路径
    
        app_name: 应用程序名，如：apps.demo
        file_name: 文件名，如：views.py
        do_glob: 是否深层路径查找，默认关闭
    """
    app_base_dir = os.path.join(get_configs(CONFIG_PATH)["dirname"], *app_name.split('.'))
    if file_name in os.listdir(app_base_dir):
        return os.path.join(app_base_dir, file_name)

    if not do_glob:
        return ''

    search_path = os.path.join(app_base_dir, '**', '*')
    objs = glob.glob(search_path, recursive=True)
    for obj in objs:
        if os.path.isfile(obj) and os.path.basename(obj) == file_name:
            return obj
    
    return ''
